<HTML>
<BODY>
<PRE>
<!-- Manpage converted by man2html 3.0.1 -->


<B><A HREF="HASH.html">HASH(3)</A></B> 						  <B><A HREF="HASH.html">HASH(3)</A></B>


</PRE>
<H2>NAME</H2><PRE>
       hash - hash database access method


</PRE>
<H2>SYNOPSIS</H2><PRE>
       <B>#include</B> <B>&lt;sys/types.h&gt;</B>
       <B>#include</B> <B>&lt;db.h&gt;</B>


</PRE>
<H2>DESCRIPTION</H2><PRE>
       The  routine  <I>dbopen</I>  is the library interface to database
       files.  One of the supported file formats is  hash  files.
       The  general description of the database access methods is
       in <B><A HREF="dbopen.html">dbopen(3)</A></B>, this manual page  describes  only	the  hash
       specific information.

       The  hash data structure is an extensible, dynamic hashing
       scheme.

       The access method  specific  data  structure  provided  to
       <I>dbopen</I> is defined in the &lt;db.h&gt; include file as follows:

       typedef struct {
	      u_int bsize;
	      u_int ffactor;
	      u_int nelem;
	      u_int cachesize;
	      u_int32_t (*hash)(const void *, size_t);
	      int lorder;
       } HASHINFO;

       The elements of this structure are as follows:

       bsize  <I>Bsize</I>  defines  the hash table bucket size, and is,
	      by default, 256 bytes.  It  may  be  preferable  to
	      increase the page size for disk-resident tables and
	      tables with large data items.

       ffactor
	      <I>Ffactor</I> indicates a desired density within the hash
	      table.   It  is  an  approximation of the number of
	      keys allowed  to	accumulate  in	any  one  bucket,
	      determining  when  the hash table grows or shrinks.
	      The default value is 8.

       nelem  <I>Nelem</I> is an estimate of the final size of the  hash
	      table.  If not set or set too low, hash tables will
	      expand gracefully as keys are entered,  although	a
	      slight performance degradation may be noticed.  The
	      default value is 1.

       cachesize
	      A suggested maximum size, in bytes, of  the  memory
	      cache.  This value is <B>only</B> advisory, and the access
	      method will allocate more memory rather than  fail.

			 August 18, 1994			1

<B><A HREF="HASH.html">HASH(3)</A></B> 						  <B><A HREF="HASH.html">HASH(3)</A></B>

       hash   <I>Hash</I>  is	a  user  defined hash function.  Since no
	      hash function performs equally well on all possible
	      data,  the  user	may  find  that the built-in hash
	      function does poorly  on	a  particular  data  set.
	      User  specified  hash functions must take two argu-
	      ments (a pointer to a byte string and a length) and
	      return  a  32-bit  quantity  to be used as the hash
	      value.

       lorder The byte order for integers in the stored  database
	      metadata.  The number should represent the order as
	      an integer; for example, big endian order would  be
	      the  number  4,321.   If	<I>lorder</I>	is 0 (no order is
	      specified) the current host order is used.  If  the
	      file already exists, the specified value is ignored
	      and the value specified when the tree  was  created
	      is used.

       If  the	file  already exists (and the O_TRUNC flag is not
       specified), the values specified for the parameters bsize,
       ffactor, lorder and nelem are ignored and the values spec-
       ified when the tree was created are used.

       If a hash function is specified, <I>hash</I><B>_</B><I>open</I> will attempt to
       determine  if  the  hash function specified is the same as
       the one with which the database was created, and will fail
       if it is not.

       Backward  compatible  interfaces to the older <I>dbm</I> and <I>ndbm</I>
       routines are provided, however these  interfaces  are  not
       compatible with previous file formats.


</PRE>
<H2>ERRORS</H2><PRE>
       The <I>hash</I> access method routines may fail and set <I>errno</I> for
       any of  the  errors  specified  for  the  library  routine
       <B><A HREF="dbopen.html">dbopen(3)</A></B>.


</PRE>
<H2>SEE ALSO</H2><PRE>
       <B><A HREF="btree.html">btree(3)</A></B>, <B><A HREF="dbopen.html">dbopen(3)</A></B>, <B><A HREF="mpool.html">mpool(3)</A></B>, <B><A HREF="recno.html">recno(3)</A></B>

       <I>Dynamic</I> <I>Hash</I> <I>Tables</I>, Per-Ake Larson, Communications of the
       ACM, April 1988.

       <I>A</I> <I>New</I> <I>Hash</I> <I>Package</I> <I>for</I> <I>UNIX</I>, Margo  Seltzer,  USENIX  Pro-
       ceedings, Winter 1991.


</PRE>
<H2>BUGS</H2><PRE>
       Only big and little endian byte order is supported.

			 August 18, 1994			2

</PRE>
<HR>
<ADDRESS>
Man(1) output converted with
<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
</ADDRESS>
</BODY>
</HTML>
